· Tiempo estimado de lectura: 35 minutos.

Docker 101 - Desde cero hasta containerizar nuestra primera aplicación.

En este post vamos a aprender qué es Docker, cómo utilizarlo, cuándo es apropiado hacerlo y crearemos nuestro primer contenedor para aislar una aplicación ficticia basada en un escenario de producción.

Antes de adentrarnos en el mundo de Docker, debemos tener claros unos conceptos básicos.

¿Qué es un contenedor?

Explicado de forma muy simplificada: Un contenedor es un híbrido entre una versión más avanzada de chroot y una alternativa ligera a la virtualización.

Un contenedor es una instancia aislada a nivel de usuario del sistema operativo. Desde el punto de vista de una aplicación que se ejecuta en un contenedor, esta instancia es un ordenador independiente; y sólo tiene acceso a los recursos explícitamente asignados al contenedor.

Los contenedores comparten el núcleo y la API del sistema con el sistema operativo anfitrión, reduciendo así los recursos necesarios para ejecutar un contenedor comparado con la virtualización tradicional. La desventaja de este diseño es que el contenedor debe ejecutar el mismo sistema operativo que el anfitrión, no puedes lanzar un contenedor de una aplicación Windows en un sistema anfitrión basado en Linux.

Ventajas y desventajas de utilizar contenedores.

Las principales ventajas del uso de contenedores son las siguientes:

  • Podemos empaquetar aplicaciones junto con sus dependencias, creando así una versión portable de la aplicación y eliminando el temido “pero en mi máquina funciona”. Esto nos ayuda a simplificar el proceso de despliegue de una aplicación, y es un paso más para eliminar el metafórico muro que separa Operaciones y Desarrollo.

  • Requiere de pocos recursos de sistema adicionales, comparado con ejecutar la aplicación directamente. Esto nos permite conseguir una mayor densidad y aprovechamiento de los recursos de hardware comparado con la virtualización tradicional.

  • Reduce el esfuerzo necesario para mantener el entorno de ejecución, junto con su complejidad. En un contenedor nuestra aplicación o servicio se convierte en un paquete redistribuible, garantizando así que su ejecución será la misma en un entorno de pruebas que en uno de producción.

  • Dado que el entorno de ejecución se declara en texto plano, nos beneficiamos de las ventajas de IaC: Ahora podemos versionar el entorno y la configuración de la aplicación, revirtiendo y re-desplegando con alta velocidad y fiabilidad.

Por supuesto, no todo son ventajas:

  • Un contenedor consume recursos adicionales comparado con la ejecución directa tradicional.

  • Los contenedores comparten el núcleo con el anfitrión. Cualquier bug o glitch en el núcleo afecta a todos los contenedores.

  • La gestión de un alto número de contenedores es compleja. Existen herramientas para mitigar este aspecto, como Docker Swarm y Google Kubernetes.

  • Las aplicaciones con interfaz gráfico no son fácilmente containerizables. Los contenedores están orientados al aislamiento de servicios. Aunque podemos utilizar soluciones alternativas como redirección de X11, no es fácil y tiene su propio set de desventajas.

· Tiempo estimado de lectura: 15 minutos.

Monitorización de sistemas y redes con Nagios

En este post aprenderemos a monitorizar nuestras máquinas y servicios con Nagios. Gracias a este software, recibiremos alertas detalladas y accionables sobre nuestra insfraestructura.

Qué es Nagios.

Nagios es software usado para monitorizar sistemas, servicios, redes e infraestructura. Envía alertas en caso de problemas, y notificaciones cuando el problema ha sido resuelto.

Al contrario que otras soluciones comerciales como SolarWinds, Nagios es open source y gratis con la posibilidad de contratar soporte comercial.

Conceptos básicos para trabajar con Nagios.

Nagios puede obtener información de los recursos a monitorizar de dos formas diferentes, siendo capaz de usar ambas a la vez:

  • A través del agente de Nagios: Comprobaciones regulares iniciadas por los mismos clientes y enviadas al servidor, requiere instalación del agente en los equipos a monitorizar. La principal ventaja es la flexibilidad a la hora de desplegar addons o comprobaciones personalizadas.

  • Agentless (“sin agente”): El servidor Nagios utiliza tecnologías como WMI y SNMP para realizar comprobaciones sobre los recursos monitorizados. Su principal ventaja es la reducción en complejidad del despliegue, y la centralización de la configuración en el servidor Nagios.

· Tiempo estimado de lectura: 10 minutos.

Primeros pasos con Terraform

En este post exploraremos la herramienta Terraform, sus ventajas y desventajas; y desplegaremos una instancia de prueba en Amazon AWS.

Qué es Terraform.

Desarrollado por Hashicorp, creadores de Vagrant y Packer, Terraform es software que nos permite definir nuestra infraestructura como código. Terraform procesa nuestro código, lo compara con el estado del proveedor de servicios especificado y construye un plan de ejecución para que el estado de la infraestructura desplegada sea el definido en el código.

Explicado de forma práctica: podemos añadir nuevas instancias o modificar instancias y recursos en nuestro código (claves ssh, conectividad de red, reglas de firewall…) y aplicarlos a la infraestructura remota sin preocuparnos del cómo.

Terraform tiene soporte para los principales proveedores de infraestructura local o en la nube como Amazon AWS, Microsoft Azure, Openstack, VMware vSphere y Digital Ocean. La lista completa se encuentra, en inglés, en la web de Terraform.

· Tiempo estimado de lectura: 1 minuto.

Hello World!

Bienvenidos. En este blog iré escribiendo artículos técnicos y manuales sobre tecnología, con el objetivo de que sean útiles para cualquier visitante.

En este momento está en construcción. Mientras tanto, te invito a visitar mi GitHub y a que eches un vistazo a mis proyectos personales. Uno de ellos es un estudio sobre auto-escalado horizontal en la nube de un servidor web, dependiendo del número de visitantes utilizando Terraform.